package nespresso.servlets;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.*;

import nespresso.beans.*;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;



public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	public HttpSession session;
    /**
     * Default constructor. 
     */
    public LoginServlet() {
       
    
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		/*
		 * si l'utilisateur tape l'adresse de la servlet directement dans la barre d'adresse, il est renvoyé 
		 * sur la page d'accueil !
		 */
		response.sendRedirect("nespresso.jsp");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Log log = LogFactory.getLog(LoginServlet.class);
		// on ouvre une session pour y mettre nos objets et pour protéger les pages
		session  = request.getSession(true);
		// on récupère les valeurs des deux champs du formulaire de la page de login
    	request.setAttribute("LoginMessage", "");
    	String login = request.getParameter("login");
		String password = request.getParameter("motdepasse");
		
		// on vérifie qu'ils ont bien été remplis
		if(!StringUtils.isEmpty(login) && !StringUtils.isEmpty(password)){
			// on cherche le user dans la base
			Base user = new Base();
			if((user.IsPresent("users", "login", login, 0)) && (user.IsPresent("users", "pass", password, 1))) {
				user.GetResultat("users", "login", login);
				user.Suivant();
				// on crée un objet User pour conserver les informations de l'utilisateur...
				User currentUser = new User();
				currentUser.setLogin(login);
				currentUser.setId(user.GetTexte("id"));
				currentUser.setNom(user.GetTexte("nom"));
				currentUser.setPrenom(user.GetTexte("prenom"));
				currentUser.setRole(user.GetTexte("role"));
				log.info("Identification réussie du user " + currentUser.getId()+ " - Rôle : "+currentUser.getRole());
				//... et on le stocke dans la session courante.
				session.setAttribute("user", currentUser);
			
				// Enfin, on redirige les données vers le jsp suivant
				user.Free();
				request.getRequestDispatcher("commandes.jsp").forward(request, response);
			} else {
				user.Free();
				request.setAttribute("LoginMessage", "Utilisateur inconnu !");
				log.error("Identification échouée !!");
				RequestDispatcher reqDispatcher = getServletConfig().getServletContext().getRequestDispatcher("/nespresso.jsp");
			    reqDispatcher.forward(request,response);
			}
			
		} else {
			// Si l'utilisateur n'a pas rempli les deux champs du formulaire, il est renvoyé sur nespresso.jsp
			request.setAttribute("LoginMessage", "Veuillez entrer un login et un mot de passe !");
			RequestDispatcher reqDispatcher = getServletConfig().getServletContext().getRequestDispatcher("/nespresso.jsp");
		    reqDispatcher.forward(request,response);
		}
	}
	

	

}
